ANALISIS SOBRE EL USO DE LAS ZONAS DE ESTUDIO (Unimag)

Analisis de Datos y Programacion básica

Autor/a
Afiliación

Anghely Perez, Juan Adarraga, Carlos Vega & Esteban Villafañe

Universidad del Magdalena, Santa Marta

Fecha de publicación

22 de mayo de 2024

INTRODUCCION

Este trabajo se enfoca en desarrollar un análisis de el uso de las zonas de descanso por los estudiantes de distintas carreras en la Universidad del Magdalena, Colombia, utilizando análisis espacial. Se busca determinar cuales son aquellas zonas de mayor uso por los estudiantes asi como visualizar que materias son las mas estudiadas en dichos puntos.

Tratamiento de datos.

los datos utilizados en el presente estudio cuenta con una colección de 50 datos recolectados en todo el campus de la institucion, almacenados el sitio web ArcGIS con el objetivo de analizar y estudiar aquellas zonas usadas para el estudio y llegar a saber cuales son las carreras que mas hacen uso de ellas.

Instalacion y carga de librerias

#instalar paquetes 
 
#install.packages("sf")
#install.packages("tidyverse")
#install.packages("ggplot2")
#install.packages("readr")
#install.packages("plotly")
#install.packages("osmdata")
#install.packages("leaflet")
#install.packages("kableExtra")

library(pander)
library(sf)
library(tidyverse)
library(ggplot2)
library(readr)
library(plotly)
library(osmdata)
library(leaflet)
library(kableExtra)

Lectura de base de datos(.sph)

# Se carga la base de datos
data <- st_read("survey.shp", quiet=TRUE)

kable(head(data, 3))
globalid CreationDa Creator EditDate Editor numero_de_ materia_qu carrera_qu fecha geometry
d530cf2e-2cfb-4fbe-8b92-c7c4c11cd1ec 2024-04-25 NA 2024-05-05 DREKO24 3 Auditoría Contaduría pública 2024-04-25 POINT (-74.1864 11.22456)
a37c3b6a-cce0-4a2f-841f-c2f790325c91 2024-04-26 NA 2024-05-05 DREKO24 5 Inglés Lic. En Ciencias Naturales y educación ambiental 2024-04-26 POINT (-74.18617 11.22616)
249215be-44ef-4f5e-81be-77033cb55b33 2024-04-26 NA 2024-05-05 DREKO24 1 Ocio Economía 2024-04-26 POINT (-74.1864 11.22597)

Pasos para el tratamiento de datos

El procesamiento y tratamiento de datos juegan un papel fundamental en la generación de información significativa, esto garantizamos precisión en los resultados. Por ello realizamos esta serie de pasos.

1. Estandarizacion de datos (caracteres)

#Estandarizamos las respuestas sobre que carrera estudia y que materia se encuentra estudiando, debido a que puede contener caracteres tanto en minuscula como en mayuscula al igual que contener tildes que afecten el análisis.
 
data<-data %>% mutate(materia_qu=tolower(materia_qu))
 
#eliminar tildes
data <- data %>% mutate(materia_qu=iconv(materia_qu, from = "UTF-8", to = "ASCII//TRANSLIT"))
 
data<-data %>% mutate(carrera_qu=tolower(carrera_qu))
 
#eliminar tildes
data <- data %>% mutate(carrera_qu=iconv(carrera_qu, from = "UTF-8", to = "ASCII//TRANSLIT"))

Caracteres incompletos

Eliminamos errores humanos al escribir el texto, para estandarizar las respuestas, tanto de manterias que se estudian como nombres de las carreras y asi evitar datos duplicados.

# Define el número de fila que deseas actualizar
fila_numero <- 40
columna_nombre <- "carrera_qu"  # Por ejemplo, actualizaremos la columna "carrera_qu"

# Asigna el nuevo valor a la celda específica
data[fila_numero, columna_nombre] <- "contaduria publica"

# Define el número de fila que deseas actualizar
fila_numero <- 39
columna_nombre <- "carrera_qu"  # Por ejemplo, actualizaremos la columna "carrera_qu"

# Asigna el nuevo valor a la celda específica
data[fila_numero, columna_nombre] <- "negocios internacionales"


# Define el número de fila que deseas actualizar
fila_numero <- 26
columna_nombre <- "materia_qu"  # Por ejemplo, actualizaremos la columna "carrera_qu"

# Asigna el nuevo valor a la celda específica
data[fila_numero, columna_nombre] <- "circuito dc"

Verificar los duplicados

#Verificar duplicados en filas completas
duplicados_filas <- duplicated(data)

2. Convertimos los datos a objetos espaciales

#Convertimos la columna geometry en un objeto espacial
data_sf<-st_as_sf(data)
 
#Extraemos coordenadas lon y lat 
coordenadas<-st_coordinates(data_sf)
 
#Creamos un data frame con los datos separados (SOLO COORDENADAS)
data_sep<-as.data.frame(coordenadas)
 
#Renombrar columnas 
colnames(data_sep)<- c("lng", "lat")
 
# COMBINAMOS LOS DATOS ESPACIALES A NUESTRA DATAFRAME INICIAL
data_geometria <- cbind(data_sf, data_sep)

3. Visualización del mapa delimitado (zona de interés)

# Graficar la Universidad del Magdalena en los limites de Santa Marta
datad <- getbb("Santa Marta, Magdalena, Colombia")

# Construir la consulta OSM para obtener universidades
datad <- opq(bbox = datad) %>%
  add_osm_feature(key = "amenity", value = "university")

## Obtener los datos en formato sf
datad_sf <- osmdata_sf(datad)

## Seleccionar los polígonos y las columnas de interés
datad_geometria <- datad_sf$osm_polygons %>% 
  select(osm_id, name)

# Filtrar para obtener solo la Universidad del Magdalena
universidad_del_magdalena <- datad_geometria %>% 
  filter(name == "Universidad del Magdalena")

library(dplyr)
library(tidyverse)

mymap <- leaflet(data=universidad_del_magdalena) %>% 
  addTiles() %>%
  addPolygons(color = "blue", fillOpacity = 0.5, weight = 2, popup = ~name)

# Mostrar el mapa
mymap

El polígono delimitado en color azul nos muestra toda el area de la Universidad del Magdalena sobre el cual estaremos trabajando.

Creación de variable edificios principales

Creamos la variable edificios principales que nos ayudará a visualizar zonas de interes donde, los estudiantes tienden a estudiar, usando las funciones disponibles en Openstreetmap.com con ayuda de osmdata y leaflet

# Crear el mapa de zonas universitarias en Santa Marta
mapa4 <- opq(bbox = getbb("Universidad del Magdalena, Colombia")) %>% 
  add_osm_feature(key = "building", value = "university") %>%
  osmdata_sf()

# Extraer los polígonos de las zonas universitarias
cc_geometria <- mapa4$osm_polygons

# Crear el mapa de leaflet con los polígonos
mapa <- leaflet(cc_geometria) %>% 
  addTiles() %>% 
  addPolygons(col = "blue")

# Agregar los marcadores circulares con los datos de datos_sf2
mapa_final <- mapa %>% 
  addCircleMarkers(data = data_geometria,
                   lng = ~lng,        # Columna de longitud
                   lat = ~lat,        # Columna de latitud
                   color = "red",     # Color de los puntos
                   fillOpacity = 0.8  # Opacidad del relleno
  )

# Mostrar el mapa final
mapa_final

Centroides añadidos al mapa

Añadimos los centroides (bloques de la Universidad) en base a esto podemos analizar la distancia entre las encuestas y los bloques principales de la Universidad, usando summary nos brinda un resumen estadistico que aplicaremos a continuación.

#install.packages("sf")
#todos los centroides
centr<-st_centroid(cc_geometria)

leaflet(cc_geometria) %>% 
  addTiles() %>% 
  addCircleMarkers(data=centr,col="red") %>% 
  addPolygons(col="yellow")  
#Distancias de las propiedades a los bloques de la Universidad
dist_matrix <- st_distance(x = datad_geometria, y = centr)

# Encontramos la distancia mínima a los bloques de la Universidad
dist_min <- apply(dist_matrix, 1, min)
datad_geometria$distancia_zona <- dist_min

summary(datad_geometria$distancia_zona)
   Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
    0.0   606.6  1213.3   859.8  1289.7  1366.1 

El estadístico de resumen anterior se infiere que la encuesta mas cercana (MIN) encontrada a un bloque de la universidad es de 0 metros y el más lejano (MAX) se encuentra a 13 kilómetros, donde en niveles representativos la distancia (MEAN) entre ellas es de 859 metros.

Graficos Plotly

Grafico No.1

En el sigueiente grafico podemos visualizar cuales son esas materias que demandan mas tiempo de estudio a los universitarios del campus de la universidad, en base a esto podemos inferir que en su mayoria las zonas libres son usadas para oscio, seguidas del estudio de Calculo Integral.

# Calcular la cantidad total de estudiantes por materia
t_materia <- aggregate(numero_de_~ materia_qu, data = data_geometria, sum)


fig <- plot_ly(
  data=t_materia,
  x = ~materia_qu,
  y = ~numero_de_,
  type = 'bar',
  name = 'No. de Estudiantes por Materia'
)


# Personalizar el gráfico
fig <- fig %>% layout(
  title = 'Cantidad de Estudiantes por Materia',
  xaxis = list(title = 'Materia'),
  yaxis = list(title = 'Cantidad de Estudiantes')
)

# Mostrar el gráfico
fig

Grafico No.2 (Numero de personas por carrera en zona) Interactivo

En esta gráfico vemos ahora, un analisis mas profundo, donde podemos observar no solo la carrera que se estudia sino que materia se estudia y cuantos estudiantes se encontraban en las zonas libres, vemos que la carrera de Economía es la que mas usa la zonas de estudio (En las fechas analizadas)

g<-ggplot(data)+
  aes(x=materia_qu,
      y=numero_de_,
      colour=carrera_qu)+
  geom_point()+
  labs(title="Estudiantes en zona de estudio por carrera",x="Materia que estudia",y="Numero de estudiantes en la zona")+
  scale_colour_discrete(name="carrera que estudia")+
  theme_bw()
  ggplotly(g)

Referencias:

Sánchez Alberca, Alfredo. 2024. “Creación de documentos científicos con Quarto.” March 1, 2024.

Anexo F Quarto

Uso de ploty para graficos interactivos

Time Series and Date Axes in R

Modelo predictivo de las viviendas del área metropolitana de Barranquilla

Visualización interactiva en R: crea gráficos interactivos con plotly

Cree gráficos ggplot2 interactivos con Plotly en R

DIAGRAMAS DE BARRAS EN R - PLOTLY